package com.cgy.utils.jmx;

import com.cgy.utils.jmx.jvm.constant.Jvm;
import com.cgy.utils.jmx.jvm.constant.JvmInfo;

import java.util.List;
import java.util.Map;

/**
 * @author CHTK
 */
public abstract class IJvmInfoFactory {

    private JvmInfo<Object> jvmInfo = new JvmInfo<Object>();

    /**
     * 获取状态
     * @return
     */
    public JvmInfo<Object> extStatus() {
        jvmInfo.clear();
        status();
        return jvmInfo;
    }

    /**
     * 赋值
     * @param key
     * @param value
     * @param describe
     */
    public void put(String key, Object value, String describe) {
        jvmInfo.put(key, value, describe);
    }
    /**
     * 获取状态
     * @return
     */
    abstract public void status();

    /**
     * 字段
     * @return
     */
    public Map<String, String> fields() {
        return null;
    }

    /**
     *  描述
     * @return
     */
    public Map<String, String> describes() {
        return jvmInfo.getStoresDescribe();
    }
    /**
     * 值
     * @return
     */
    public Map<String, Object> values() {
        return jvmInfo.getStoresValue();
    }
    /**
     * 值
     * @return
     */
    public List<Jvm<Object>> valueAndDescribe() {
        return jvmInfo.getJvmList();
    }

    /**
     * 获取状态
     * @param key
     * @return
     */
    public Object getStatus(final String key) {
        return values().get(key);
    }
}
